﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;

using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;

namespace controller
{
   
	public class DBfacade
	{
		/********** ATTRIBUTES **********/
		private SqlConnection dbCon;
		private SqlCommand dbCommand;
		//private SqlDataReader dataReader = null;
		string connectionstring;

		/********** CONSTRUCTOR **********/

		public DBfacade()
		{
			// Denne følgende linie, fortæller adressen på databasen og hvilken catalog.
            connectionstring = @"Data Source=ealdb1.eal.local;Initial Catalog=EJL01_DB;Persist Security Info=True;User ID=ejl01_usr;Password=Baz1nga1";


			// Connection objekt.
			dbCon = new SqlConnection(connectionstring); // Definere vores SQL connection.

			// Command Objekt
			dbCommand = new SqlCommand();
			dbCommand.CommandType = CommandType.StoredProcedure;
			dbCommand.Connection = dbCon;
		}



		/***** Metoder ******/


		//public MedarbejderColl DBLoadMedarbejderColl()
		//{
		//    MedarbejderColl aktuelMedarbejderColl = new MedarbejderColl();
		//    Medarbejder aktuelMedarbejder;
		//    //KontaktInfo aktuelKontaktInfo;
		//    dbCommand.CommandText = "SP_DBLoadMedarbejderColl";
		//    dbCommand.Parameters.Clear();
		//    try
		//    {
		//        dbCon.Open();
		//        dataReader = dbCommand.ExecuteReader();
		//        while (dataReader.Read() == true)
		//        {
		//            //aktuelKontaktInfo = new KontaktInfo((int)dataReader[1], (int)dataReader[7], dataReader[8].ToString(), dataReader[9].ToString(), dataReader[12].ToString(), dataReader[10].ToString(), dataReader[11].ToString(), dataReader[13].ToString());
		//            aktuelMedarbejder = new Medarbejder();
		//            aktuelMedarbejderColl.CreateMedarbejder(aktuelMedarbejder);
		//        }
		//    }
		//    catch (Exception e)
		//    {
		//        throw new SystemException(e.ToString());
		//    }
		//    finally
		//    {
		//        if (dbCon != null)
		//        {
		//            dbCon.Close();
		//        }
		//    }
		//    return aktuelMedarbejderColl;
		//}

        public int CreateMedarbejder(string medarbejderNavn, int cprNr, byte[] billede, bool aktiv, DateTime ansættelsesDato, int ansættelsesTimer, string bemærkninger)
		{
			int medarbejderId;
			SqlParameter par;
			dbCommand.CommandText = "SP_CreateMedarbejder";
			dbCommand.CommandType = CommandType.StoredProcedure;
			dbCommand.Parameters.Clear();


			par = new SqlParameter("@medarbejderId", SqlDbType.Int);
			par.Direction = ParameterDirection.Output;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@navn", SqlDbType.NVarChar);
			par.Value = medarbejderNavn;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@cprnr", SqlDbType.Int);
			par.Value = cprNr;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@billede", SqlDbType.Image);
			par.Value = billede;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@aktiv", SqlDbType.Bit);
			par.Value = aktiv;
			dbCommand.Parameters.Add(par);

            par = new SqlParameter("@ansættelsesDato", SqlDbType.DateTime);
            par.Value = ansættelsesDato;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@ansættelsesTimer", SqlDbType.Int);
			par.Value = ansættelsesTimer;
			dbCommand.Parameters.Add(par);

			par = new SqlParameter("@bemærkninger", SqlDbType.NVarChar);
			par.Value = bemærkninger;
			dbCommand.Parameters.Add(par);

			try
			{
				dbCon.Open();
				dbCommand.ExecuteNonQuery();
				medarbejderId = (int)dbCommand.Parameters["@medarbejderId"].Value;
				
			}
			catch (SqlException e)
			{
				throw e;
			}
 
			finally  // eksekveres altid
			{
				if (dbCon.State == ConnectionState.Open)
				{
					dbCon.Close(); // hvis connection var åben: så luk!!
				}
			}
			return medarbejderId; 
		}
	}
}
